package com.itfenghuang.day07;

import java.util.Comparator;
import java.util.TreeSet;

//TreeSet中的另外一种实现排序的方法
public class A02_比较器排序 {
    public static void main(String[] args) {
        /**
         * 自然排序和比较器排序
         *      自然排序:
         *          实现步骤:
         *              1.自定义类实现接口Comparable接口;
         *              2.重写compareTo方法
         *              3.根据返回值进行排序
         *      比较器排序:
         *          实现步骤:
         *              1.使用TreeSet的带参构造创建对象
         *              2.参数:Comparator接口的实现类(匿名内部类)
         *              3.重写compare方法,根据返回值进行排序
         * 排序规则:    返回0,正数,负数
         *  作业:
         *      使用TreeSet集合存储字符串 c  ab  cd  qwer 并按照长度排序
         *      如果字符串长度相同,按照字母字典顺序排序
         *
         */
        //使用比较器排序的话,需要使用TreeSet带参构造
        //    public TreeSet(Comparator<? super E> comparator)
        //      创建对象
        TreeSet<Teacher> set = new TreeSet<>(new Comparator<Teacher>() {
            @Override
            public int compare(Teacher o1, Teacher o2) {
                //o1: 表示要存入到集合的那个元素 this
                //o2: 表示已经存在集合中的元素  o
                int i=o1.getAge()-o2.getAge();//返回i从小到大
                return -i;
            }
        });
        set.add(new Teacher("爆一",45));
        set.add(new Teacher("爆二",20));
        set.add(new Teacher("爆三",40));
        System.out.println(set);


    }
}
//标准的 bean类 实体类
class Teacher{
    private  String name;
    private int age;

    @Override
    public String toString() {
        return "Teacher{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Teacher() {
    }

    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }
}